如何用外鍵鏈接兩種形式(wagtail 形式和 django 形式)? (How to link two forms (wagtail form and django form) with a foreign key?)


問題描述

如何用外鍵鏈接兩種形式(wagtail 形式和 django 形式)? (How to link two forms (wagtail form and django form) with a foreign key?)

我將 django 表單與 wagtail 表單結合使用。django 表單將記錄一些字段,這些字段將在此類型的任何表單上:姓名、電子郵件和 wagtail 表單將記錄由特定於該實例的表單頁面創建者定義的額外數據。

我已經重載用於捕獲兩組數據的 serve 方法,我可以處理這兩個表單,但是在嘗試添加將表單內容相互關聯的邏輯時我被卡住了,這樣當一個提交集被刪除時,另一組將是出色地。我認為我需要的是外鍵。

以下代碼在 form_submission.event_submission = a.id 失敗,我想從 wagtail 表單提交中獲取 id 並將其添加為外鍵到 django 表單,這樣當 wagtail 表單部分被刪除時,另一個也被刪除,這樣我就可以在兩個表單提交之間建立一個可用的鏈接。

def serve(self, request, *args, **kwargs):
    if request.method == 'POST':
        form = EventSignupForm(request.POST)
        wagtail_form = self.get_form(request.POST, request.FILES, page=self, user=request.user)

        if form.is_valid() and wagtail_form.is_valid():
            a = self.process_form_submission(wagtail_form)
            form_submission = form.save(commit=False)
            form_submission.event_submission = a.id
            form_submission.save()
            return self.render_landing_page(request, form_submission, *args, **kwargs)
    else:
        form = EventSignupForm()
        wagtail_form = self.get_form(page=self, user=request.user)

    context = self.get_context(request)
    context['form'] = form
    context['wagtail_form'] = wagtail_form
    return TemplateResponse(
        request,
        self.get_template(request),
        context
    )

表單提交類和 django 模型表單看起來像這樣。我認為我在模型中的 ForeignKey 不正確,但我不知道。有什麼幫助嗎?

class EventFormSubmission(AbstractFormSubmission):
    cancellation_id = models.CharField(max_length=7)

class EventSignup(models.Model):
    """
    A model to contain signup info for an event: name, email.
    """
    event_submission = models.ForeignKey(EventFormSubmission, on_delete=models.CASCADE)
    name = models.CharField(max_length=100)
    email = models.EmailField()

參考解法

方法 1:

I solved this by adding the extra fields I wanted (name, email) to the EventFormSubmission and then using a regular django form (not a ModelForm) to collect these pieces of information.

(by Chris RothChris Roth)

參考文件

  1. How to link two forms (wagtail form and django form) with a foreign key? (CC BY‑SA 2.5/3.0/4.0)

#wagtail #forms #foreign-keys #Django






相關問題

Wagtail Cms 是否支持 Google 登錄和用戶登錄添加會話 (Does Wagtail Cms support Google login and user login add session to)

Wagtail Django-form編輯現有對象 (Wagtail Django-form edit existing object)

如何將 Wagtail 'admin' 菜單添加到自定義模板? (How to add Wagtail 'admin' menu to custom templates?)

django.db.utils.OperationalError:外鍵不匹配 - “project_projectpage”引用“auth_user” (django.db.utils.OperationalError: foreign key mismatch - "project_projectpage" referencing "auth_user")

如何使用 Wagtail 鉤子在 Wagtail 中生成自定義鏈接 (How to generate a custom link in Wagtail using Wagtail hooks)

Wagtail:如何設置單元測試以進行簡單的頁面編輯? (Wagtail: How to setup up unittest for simple page edit?)

如何修復錯誤“str”對像沒有屬性“relative_url” (How to fix error 'str' object has no attribute 'relative_url')

如何將帖子從 Wordpress 導入 Wagtail 2(Draftail 編輯器),包括圖像? (How to import posts from Wordpress to Wagtail 2 (Draftail editor) including images?)

如何用外鍵鏈接兩種形式(wagtail 形式和 django 形式)? (How to link two forms (wagtail form and django form) with a foreign key?)

為什麼 RichText 不能在 wagtail 管理員中為帖子工作?這是發生的事情的類型:<h2>嘗試 post.content|richtext</h2> (Why is RichText not working in wagtail admin for posts? This is the type of thing that happens: <h2>Trying post.content|richtext</h2>)

Windows 10 上 wagtail 的客戶端文件夾在哪裡 (Where is the client folder of wagtail on windows 10)

過濾從 Wagtail 核心頁面導入的多個模型的自定義字段 (Filter on custom field across multiple models that import from Wagtail core Page)







留言討論